// scripts/build.cjs

const fs = require('fs')
const path = require('path')



// 定义源目录和目标目录的路径
const sourceDir = path.join(__dirname, 'dist');
const targetDir = path.join(__dirname, '..', '');

// 递归拷贝目录文件
function copyDir(source, target) {
  // 创建目标目录
  fs.mkdirSync(target, { recursive: true });

  // 读取源目录的内容
  const files = fs.readdirSync(source);

  // 遍历源目录的文件和子目录
  files.forEach((file) => {
    const sourcePath = path.join(source, file);
    const targetPath = path.join(target, file);

    // 判断是否为文件
    if (fs.statSync(sourcePath).isFile()) {
      // 拷贝文件
      fs.copyFileSync(sourcePath, targetPath);
    } else {
      // 递归拷贝子目录
      copyDir(sourcePath, targetPath);
    }
  });
}

// 替换文件
function replaceFile(sourceDir) {
  // const srcDir = path.resolve(__dirname, './dist')
  const url = path.join(sourceDir, 'index.html')
  // 读取dist/index.html
  let htmlStr = fs.readFileSync(url, { encoding: 'utf-8' })
  // 匹配script标签
  const reg = /<script.*>/g
  
  htmlStr = htmlStr.replace(reg, (str) => {
    // 替换关键字
    return str.replace(/\snomodule|\scrossorigin|\stype="module"/g, '')
  })

  const newTag = `  <script type="text/javascript" src="./vendor/sdkjs/plugins.js"></script>`
  htmlStr = htmlStr.replace('<head>', `<head>\n${newTag}`);
  // 输出文件
  fs.writeFileSync(url, htmlStr)
}

function mian() {
  replaceFile(sourceDir)
  copyDir(sourceDir,targetDir)
}

mian()